home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU07.ARC / BACKUP 228 (.txt) next >
Encoding:
Commodore BASIC  |  2019-04-13  |  9.0 KB  |  258 lines

  1. 100 IFPEEK(46)=017THEN120
  2. 110 GOTO1160
  3. 120 POKE999,PEEK(56):POKE56,PEEK(46)+9:CLR:BB=PEEK(56):PRINT"[147]":CX=53281:CL=65511
  4. 130 N=254:IFPEEK(999)<>160THENN=PEEK(999)
  5. 140 N=N-BB:BA=BB*256:MA=828:DIMBM%(35,24):FORJ=.TO7:TA(J)=2^J:NEXT:WD=8:FW%=0
  6. 150 IFPEEK(1005)=234THENWD=9:FW%=1:PRINT" BE SURE DISKS ARE INSERTED"
  7. 160 POKECX,246:INPUT" TYPE B FOR BAM.  D FOR DIRECT";TY$
  8. 170 INPUT" STARTING TRACK  1[157][157][157]";TA:INPUT" STARTING BLOCK  0[157][157][157]";BS
  9. 180 INPUT" FINISH TRACK  35[157][157][157][157]";TZ
  10. 190 PRINTN"BUFFERS AVAIL.":OPEN1,8,15:POKECX,16
  11. 200 D$="S":GOSUB870
  12. 210 GOSUB610
  13. 220 T=TS:S=BS:NU=1:T1=T:S1=S:TF=TZ:CLOSE1:SYSCL
  14. 230 OPEN1,8,15:PRINT#1,"I":OPEN3,8,3,"#"
  15. 240 PRINT"READ BLOCK";
  16. 250 IFBM%(T1,S1)=.THENGOSUB430:NU=NU+1:IFNU>NTHEN280
  17. 260 S1=S1+1:IFS1>20THENS1=.:T1=T1+1
  18. 270 IFT1<TF+1THEN250
  19. 280 PRINT"":CLOSE3:CLOSE1:SYSCL
  20. 290 D$="D":POKECX,49:GOSUB870
  21. 300 OPEN1,WD,15:PRINT#1,"I":OPEN3,WD,3,"#"
  22. 310 PRINT"WRITE BLOCK";
  23. 320 NU=1:T1=T:S1=S
  24. 330 IFBM%(T1,S1)=.THENGOSUB520:NU=NU+1:IFNU>NTHEN360
  25. 340 S1=S1+1:IFS1>20THENS1=.:T1=T1+1
  26. 350 IFT1<TF+1THEN330
  27. 360 PRINT"":CLOSE1:CLOSE3:SYSCL
  28. 370 S=S1+1:IFS>20THENS=.:T1=T1+1
  29. 380 T=T1:IFT>TFTHEN410
  30. 390 D$="S":POKE53281,49:GOSUB870
  31. 400 NU=1:T1=T:S1=S:GOTO230
  32. 410 CLOSE1:CLOSE3:SYSCL
  33. 420 POKE56,PEEK(999):CLR:END
  34. 430 C=0
  35. 440 PRINT#1,"U1";3;0;T1;S1
  36. 450 GOSUB860:IFNOTERTHEN470
  37. 460 C=C+1:IFC<2GOTO440
  38. 470 PRINT#1,"B-P";3;0
  39. 480 IFNUTHENPRINTRIGHT$("    "+STR$(T1)+STR$(S1)+"  #"+STR$(NU),12)"[157][157][157][157][157][157][157][157][157][157][157][157]";
  40. 490 P3=PEEK(3):P4=PEEK(4):POKE4,BB+NU:SYSMA:POKE3,P3:POKE4,P4
  41. 500 IFST<>.ANDST<>64THENGOSUB860:PRINTER$
  42. 510 RETURN
  43. 520 C=.:PRINT#1,"B-P";3;0
  44. 530 PRINTRIGHT$("    "+STR$(T1)+STR$(S1)+"  #"+STR$(NU),12)"[157][157][157][157][157][157][157][157][157][157][157][157]";
  45. 540 P3=PEEK(3):P4=PEEK(4):POKE4,BB+NU:SYSMA+3:POKE3,P3:POKE4,P4
  46. 550 IFST<>.ANDST<>64THEN920
  47. 560 PRINT#1,"U2";3;0;T1;S1
  48. 570 GOSUB860:IFNOTERTHEN600
  49. 580 C=C+1:IFC<2THEN560
  50. 590 GOTO920
  51. 600 RETURN
  52. 610 TS=TA:TF=0:S9=0
  53. 620 PRINT#1,"I":OPEN3,8,3,"#"
  54. 630 PRINT"TRACK#   BLOCKS"
  55. 640 BY=4:NU=0:T1=18:S1=0:C0$=CHR$(.):GOSUB430
  56. 650 T%=(BY-4)/4+1
  57. 660 PRINT" ";T%;
  58. 670 IFPEEK(BA+BY)=.THENFORJ=.TO20:BM%(T%,J)=.:NEXT:BY=BY+4:GOTO720
  59. 680 S=.
  60. 690 BY=BY+1:A0=PEEK(BA+BY):FORJ=.TO7:BM%(T%,S)=A0ANDTA(J):S=S+1:NEXT
  61. 700 IFS<22THEN690
  62. 710 BY=BY+1
  63. 720 ES=21:IFT%>17THENES=19
  64. 730 IFT%>24THENES=18
  65. 740 IFT%>30THENES=17
  66. 750 IFTY$="D"THENFORS=.TOES:BM%(T%,S)=.:NEXT
  67. 760 FORJ=ESTO24:BM%(T%,J)=-1:NEXT
  68. 770 SM=.:FORJ=.TO20:IFBM%(T%,J)=.THENSM=SM+1
  69. 780 NEXT:PRINTTAB(12);SM:S9=S9+SM
  70. 790 IFSM=.ANDTS=T%THENTS=TS+1:GOTO810
  71. 800 IFSM<>.THENTF=T%
  72. 810 IFBY<143THEN650
  73. 820 CLOSE3
  74. 830 PRINT:PRINTS9"BLOCKS TO TRANSFER"
  75. 840 PRINTINT(S9*.0408)+1"MIN. FOR COPY"
  76. 850 RETURN
  77. 860 INPUT#1,ER$,E1$,E2$,E3$:ER=VAL(ER$):ER$=ER$+E1$+E2$+E3$:RETURN
  78. 870 IFFW%=1THENPOKECX,16:RETURN
  79. 880 S1$="SOURCE[146]":IFD$="D"THENS1$="DEST.[146]"
  80. 890 PRINT"  INSERT ";S1$;" DISK, PRESS SPACE[146]"
  81. 900 A$="A":GETA$:IFA$<>" "THEN900
  82. 910 POKECX,16:RETURN
  83. 920 PRINTER$:POKE56,PEEK(999):CLR:STOP
  84. 930 REM::::DO NOT MODIFY PROGRAM LOWER THAN 930 !
  85. 940 PRINT"[147][159]  THE  PROGRAM  IS  NOW  READY  TO        MAKE  COPIES . . . "
  86. 950 PRINT"  TO MAKE MORE ROOM FOR THE COPIES,"
  87. 960 PRINT"  THE PROGRAM WILL NOW HAVE TO ERASE "
  88. 970 PRINT"  THE PORTION YOU HAVE JUST USED! "
  89. 980 PRINT"  DO NOT SAVE PROGRAM AFTER RUNNING"
  90. 990 PRINT"  IF YOU WISH TO MAKE MORE COPIES "
  91. 1000 PRINT"  FORMAT DESTINATION DISKS NOW. "
  92. 1010 PRINT"  PRESS  RETURN [146] TO FORMAT MORE DISKS"
  93. 1020 PRINT"  PRESS  SPACE [146] TO  MAKE  COPIES ."
  94. 1030 K$="A":GETK$:IFK$=""THEN1030
  95. 1040 IFK$=CHR$(32)THEN1070
  96. 1050 IFK$=CHR$(13)THEN1520
  97. 1060 GOTO940
  98. 1070 FORI=828TO915:READA:POKEI,A:NEXT
  99. 1080 POKE45,033:POKE46,017:POKE4349,0:POKE4350,0:GOTO120
  100. 1090 DATA76,66,3,76,97,3,162,3,32,198,255,160,0,132,3,32,207,255,32,138,3
  101. 1100 DATA145,3,32,128,3,165,144,208,3,200,208
  102. 1110 DATA238,32,204,255,96,162,3,32,201,255,160,0,132
  103. 1120 DATA3,32,138,3,177,3,32,128,3,32
  104. 1130 DATA210,255,165,144,208,3,200,208,238,32,204,255
  105. 1140 DATA96,72,165,1,9,3,133,1,88,104,96,72,120,165,1,41,252,133,1,104,96
  106. 1150 IFPEEK(45)=044ANDPEEK(46)=019THEN120
  107. 1160 PRINT"[147]                                        ";
  108. 1170 DIMS$(28):DIMN$(28)
  109. 1180 PRINT"    *  *  *  * BACKUP 228 *  *  *  *    ";
  110. 1190 PRINT"                                        ";
  111. 1200 PRINT"                                        "
  112. 1210 FORT=1TO1000:NEXT
  113. 1220 PRINT"[159]'GOTO 920' IF PROGRAM QUITS ABNORMALLY"
  114. 1230 PRINT" DO NOT SAVE THIS PROGRAM AFTER RUNNING!"
  115. 1240 PRINT"[159]                                        ";
  116. 1250 PRINT"                                        ";
  117. 1260 PRINT"                                        ";
  118. 1270 PRINT"    SOME DISKS HAVE  BAD BLOCKS  WHICH  ";
  119. 1280 PRINT"    MUST BE DONE WITH OTHER PROGRAMS.   ";
  120. 1290 PRINT"                                        ";
  121. 1300 PRINT"    BAD BLOCKS CAN BE DETECTED ON THE   ";
  122. 1310 PRINT"    ORIGINAL DISK BY A LOUD CLICKING    ";
  123. 1320 PRINT"    NOISE FROM THE DISK DRIVE DURING    ";
  124. 1330 PRINT"    THE PROGRAM LOAD.                   ";
  125. 1340 PRINT"                                        ";
  126. 1350 PRINT"                                        "
  127. 1360 PRINT" PRESS   RETURN [146]  FOR MORE INSTRUCTIONS"
  128. 1370 PRINT" PRESS    SPACE [146]    TO  COPY DISKS"
  129. 1380 K$="A":GETK$:IFK$=""THEN1380
  130. 1390 IFK$=CHR$(13)THEN2150
  131. 1400 POKE53281,246:PRINT"[147][159]                                        ";
  132. 1410 PRINT" BE SURE WRITE PROTECT NOTCH IS COVERED ";
  133. 1420 PRINT"                                        ";
  134. 1430 PRINT"              ON  SOURCE  DISK          [159]";
  135. 1440 PRINT"                                        "
  136. 1450 PRINT"  USE THIS PROGRAM TO FORMAT YOUR "
  137. 1460 PRINT"  DESTINATION DISKS. THIS PUTS THE "
  138. 1470 PRINT"  EXACT HEADER AND ID ON THE "
  139. 1480 PRINT"  DESTINATION DISK."
  140. 1490 INPUT" HOW MANY DISK DRIVES   2[157][157][157]";NU$:IFNU$="2"THENFD=9:GOTO1860
  141. 1500 POKE1005,120:FD=8:GOTO1530
  142. 1510 OPEN1,8,15:INPUT#1,ER$,E1$,E2$,E3$:ER=VAL(ER$):ER$=ER$+E1$+E2$+E3$:RETURN
  143. 1520 POKE53281,246
  144. 1530 FORT=1TO1000:NEXT:PRINT"[147] INSERT SOURCE[146] DISK THEN PRESS SPACE[146]"
  145. 1540 K$="A":GETK$:IFK$<>CHR$(32)THEN1540
  146. 1550 OPEN2,8,0,"$0":GOSUB1510:IFERTHENPRINTER$:GOTO2080
  147. 1560 FORJ=1TO27:GET#2,S$(J):NEXTJ:GET#2,B$:
  148. 1570 GET#2,A$:GET#2,A$:GET#2,B$:DR$=A$+B$:CLOSE1:CLOSE2:SYS65511
  149. 1580 GOSUB2580
  150. 1590 D$=S$(9)+S$(10)+S$(11)+S$(12)+S$(13)+S$(14)+S$(15)+S$(16)+S$(17)+S$(18)
  151. 1600 N$=S$(19)+S$(20)+S$(21)+S$(22)+S$(23)+S$(24):
  152. 1610 DN$=D$+N$:CLOSE1:CLOSE2:SYS65511
  153. 1620 PRINT"[147] DISC NAME  ",DN$
  154. 1630 PRINT" ACTUAL ID    ",IR$
  155. 1640 IF AE$ ="A"THEN1660
  156. 1650 PRINT" TR 18, BL 0  DOES NOT CONTAIN AN 'A'"
  157. 1655 PRINT" IT DOES CONTAIN AN '";AE$;"'"
  158. 1660 INPUT" IS THIS THE PROPER SOURCE[146] DISC";QW$:IFQW$<>"Y"THEN1530
  159. 1670 INPUT" DO YOU WANT TO FORMAT DESTINATION[146]";QQ$:IFQQ$="Y"THEN1740
  160. 1680 IFNU$="1"ANDQQ$<>"Y"THEN1730
  161. 1690 PRINT" INSERT DESTINATION[146] THEN PRESS SPACE[146]"
  162. 1700 K$="A":GETK$:IFK$<>" "THEN1700
  163. 1710 OPEN1,9,15:PRINT#1,"I":GOSUB860:CLOSE1:SYS65511
  164. 1720 IFERTHENPRINTER$:GOTO2080
  165. 1730 GOTO940
  166. 1740 PRINT" INSERT DESTINATION[146] THEN PRESS SPACE[146]"
  167. 1750 K$="A":GETK$:IFK$<>" "THEN1750
  168. 1760 PRINT"[147]"
  169. 1770 PRINT" DISC NAME  ",DN$
  170. 1780 PRINT" ACTUAL ID   ",IR$
  171. 1790 PRINT" FORMATTING DESTINATION .. PLEASE WAIT":
  172. 1800 IFIR$=" "THENPRINT"NO ID NUMBER EXISTS":GOTO2080
  173. 1810 OPEN1,FD,15:PRINT#1,"I"
  174. 1820 PRINT#1,"N0:"+DN$","+IR$:DN$=""
  175. 1830 GOSUB860:CLOSE1:POKE53281,49
  176. 1840 IFERTHENPRINTER$:GOTO2080
  177. 1850 GOTO1730
  178. 1860 PRINT"[147]      HAS ONE DRIVE BEEN MODIFIED"
  179. 1870 INPUT"      TO DEVICE # 9   Y[157][157][157]";WE$
  180. 1880 IFWE$="N"THEN1950
  181. 1890 IFWE$="Y"THEN1910
  182. 1900 GOTO1860
  183. 1910 PRINT"  DRIVE #8 WILL BE THE   SOURCE [146] DRIVE"
  184. 1920 PRINT"  DRIVE #9 WILL BE THE   DESTINATION [146]"
  185. 1930 FORQW=1TO2500:NEXT:POKE 1005,234
  186. 1940 GOTO1530
  187. 1950 PRINT"[147]        TURN OFF ALL DISK DRIVES        "
  188. 1960 PRINT"       EXCEPT  DESTINATION [146] DRIVE      "
  189. 1970 FORQW=1TO1000:NEXT:PRINT"         PRESS  SPACE [146] WHEN DONE":K$="A"
  190. 1980 GETK$:IFK$<>" "THEN1980
  191. 1990 OPEN5,8,15
  192. 2000 PRINT#5,"M-W"CHR$(119)CHR$(0)CHR$(2)CHR$(9+32)CHR$(9+64)
  193. 2010 CLOSE5:SYS65511
  194. 2020 PRINT"     DEVICE NUMBER CHANGE IS DONE !"
  195. 2030 PRINT"         TURN ON  SOURCE [146] DRIVE":FORQW=1TO1000:NEXT:K$="A"
  196. 2040 FORQW=1TO1000:NEXT:PRINT"         PRESS  SPACE [146] WHEN DONE":K$="A"
  197. 2050 GETK$:IFK$<>" "THEN2050
  198. 2060 POKE1005,234
  199. 2070 GOTO1530
  200. 2080 PRINT"[147]      "ER$
  201. 2090 CLOSE1:CLOSE2:CLOSE3:CLOSE5:SYS65511
  202. 2100 PRINT"                                        ";
  203. 2110 PRINT"   **  ERROR  PLEASE  TRY  AGAIN  **    ";
  204. 2120 PRINT"                                        "
  205. 2130 FORQX=1TO4:POKE53281,11:FORQW=1TO500:NEXT:POKE53281,246:FORQW=1TO500:NEXT
  206. 2140 NEXT:GOTO1390
  207. 2150 PRINT"[147]                                        ";
  208. 2160 PRINT"  *  *  *  *  BACKUP  228  *  *  *  *   ";
  209. 2170 PRINT"                                        "
  210. 2180 PRINT"[159]     IF THIS PROGRAM HAS DIFFICULTY "
  211. 2190 PRINT"     READING A BLOCK OF INFORMATION,"
  212. 2200 PRINT"     THE BLOCK IS PROBABLY BAD."
  213. 2210 PRINT"                                        ";
  214. 2220 PRINT"  IN THE LOWER PORTION OF THE SCREEN    ";
  215. 2230 PRINT"  THREE NUMBERS WILL APPEAR DURING      ";
  216. 2240 PRINT"  THE READ OR WRITE.                    ";
  217. 2250 PRINT"                                        ";
  218. 2260 PRINT"  THE FIRST NUMBER IS THE TRACK.        ";
  219. 2270 PRINT"  THE SECOND NUMBER IS THE SECTOR.      ";
  220. 2280 PRINT"  THE THIRD NUMBER IS A COUNTER, THIS   ";
  221. 2290 PRINT"  KEEPS TRACK OF THE TOTAL BLOCKS.      ";
  222. 2300 PRINT"                                        "
  223. 2310 PRINT" PRESS   RETURN [146]  FOR MORE INSTRUCTIONS"
  224. 2320 PRINT" PRESS    SPACE [146]    TO  COPY DISKS"
  225. 2330 K$="A":GETK$:IFK$=""THEN2330
  226. 2340 IFK$=CHR$(13)THEN2360
  227. 2350 GOTO1400
  228. 2360 PRINT"[147]                                        ";
  229. 2370 PRINT"  *  *  *  *  BACKUP  228  *  *  *  *   ";
  230. 2380 PRINT"                                        "
  231. 2390 PRINT"[159]    THE BAM METHOD OF BACKUP WILL"
  232. 2400 PRINT"    WORK ON MOST DISKS.  IF THE BAM "
  233. 2410 PRINT"    WON'T WORK TRY THE DIRECT METHOD."
  234. 2420 PRINT"    IF THE DIRECT METHOD WON'T WORK "
  235. 2430 PRINT"     YOU MAY NEED TO TRY BAD BLOCKS."
  236. 2440 PRINT"                                        ";
  237. 2450 PRINT"  IF YOU NEED TO COPY A PORTION OF THE  ";
  238. 2460 PRINT"  DISK, YOU CAN SPECIFY WHICH TRACK     ";
  239. 2470 PRINT"  AND SECTOR YOU WISH TO START ON.      ";
  240. 2480 PRINT"  YOU MAY ALSO SPECIFY WHICH TRACK TO   ";
  241. 2490 PRINT"  FINISH ON.                            ";
  242. 2500 PRINT"  IF YOU DO NOT WISH TO START ON A      ";
  243. 2510 PRINT"  SPECIAL TRACK JUST PRESS  RETURN      ";
  244. 2520 PRINT"  AT THE PROMPTS.                       ";
  245. 2530 PRINT"                                        "
  246. 2540 PRINT"  PRESS   SPACE [146]  TO  MAKE  COPIES "
  247. 2550 A$="A":GETK$:IFK$<>CHR$(32)THEN2550
  248. 2560 GOTO1400
  249. 2570 CLOSE15:OPEN15,8,15:PRINT#15,"I":CLOSE15:SAVE"@0:BACK-UP 228",8
  250. 2580 CLOSE5:CLOSE15:OPEN15,8,15,"I0:":OPEN5,8,5,"#":
  251. 2590 PRINT#15,"U1";5;0;18;0
  252. 2600 GET#5,AE$:GET#5,AE$:GET#5,AE$:CLOSE5
  253. 2610 PRINT#15,"M-R";CHR$(18);CHR$(00):GET#15,I$
  254. 2620 PRINT#15,"M-R";CHR$(19);CHR$(00):GET#15,D$
  255. 2630 CLOSE15
  256. 2640 IR$=I$+D$
  257. 2650 RETURN
  258.